//
//  WKStatus.swift
//  WKWeibo
//
//  Created by 恋guang年 on 16/3/29.
//  Copyright © 2016年 恋guang年. All rights reserved.
//

import UIKit

class WKStatus: NSObject {
    //微博创建时间
    var created_at:String?
    //微博ID
    var  id:Int64 = 0
    //微博信息内容
    var  text:String?
    
    //微博图片 数组 元素是字典 微博配图,服务器返回的是数组,数组里面又是字典,后续操作不方便,需要解析字典,当KVC的时候,模型来提供图片URL地址数组
    var pic_urls:[[String:AnyObject]]? {
        didSet{
            if pic_urls?.count == 0{
                return
            }
            //实例化storeImageURLs
            storeImageURLs = [NSURL]()
            //遍历pic_urls
            for dict in pic_urls!{
                if let URLString = dict["thumbnail_pic"] as? String {
                    //根据URLString获得RUL
                    if let ImageURL = NSURL(string: URLString){
                        //把ImageURL添加到存放微博图片URL的数组
                        storeImageURLs?.append(ImageURL)
                    }
                    
                }
            }
        }
    }
    //存放微博图片URL的数组
    var storeImageURLs:[NSURL]?
    
    //微博来源
    var  source:String?
    //	转发数
    var  reposts_count:Int = 0
    //评论数
    var  comments_count:Int = 0
    //	表态数
    var  attitudes_count:Int = 0
    //微博用户user(WKUser)
    var user:WKUser?
    // 被转发的微博
    var retweeted_status: WKStatus?
    ///一键转模型
    init(dict:[String:AnyObject]){
        super.init()
        //此方法会 setValue(value: AnyObject?, forKey key: String)方法 从字典中一个个找key 找不到调用undefined
        setValuesForKeysWithDictionary(dict)
    }
    override func setValue(value: AnyObject?, forKey key: String) {
        //当key为retweeted_status时 拦截 把它转为WKStatus类模型 赋值给微博retweeted_status属性
        if key == "retweeted_status"{
            if let dict = value as? [String:AnyObject]{
                retweeted_status = WKStatus(dict: dict)
            }
            return
        }
        //当key为user时 拦截 把它转为WKUser类模型 赋值给微博user属性
        if  key == "user"{
            //可选绑定
            if let dict = value as? [String : AnyObject]{
                //转成user模型 赋值给模型user属性
                user = WKUser(dict: dict)
            }
            //return 防止走父类方法 重新在设置成字典
            return
        }
        
        super.setValue(value, forKey: key)
    }
    
    ///  没有的key属性不转
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {
        
    }
    ///  输出对象
    override var description:String {
        let keys = ["created_at","id","text","pic_urls","source","reposts_count","comments_count","attitudes_count","user"]
        return "\n \t微博模型: \(dictionaryWithValuesForKeys(keys).description)"
    }
}

